As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Many information handling systems include peripheral buses in the system architecture. A peripheral bus enables connectivity to external devices, such as plug-in cards, thereby providing a hardware expansion mechanism for the information handling system. Accordingly, peripheral buses may be supported by corresponding software architecture, including support by an operating system executing on the information handling system. One common example of a peripheral bus is a Peripheral Component Interconnect (PCI) bus, which has been used in information handling systems for many hardware and software generations. A current version of the PCI bus is the PCI Express (PCIe) bus.
Peripheral bus switches provide sharing of peripheral bus devices, also referred to as “bus endpoints,” “bus devices,” or “devices,” across multiple information handling systems, for example servers. Issues arise when one or more of the bus devices fail or a surprise removal occurs and repair or replacement may be necessary. Such failures impact the availability of the bus devices to the information handling systems. Additionally, management of availability of bus devices is performed at the operating systems of the various information handling systems, which consumes resources within the information handling systems.
Currently, proprietary support systems exist for managing bus device availability. Such support systems are cumbersome and costly, and are generally only applicable to a particular operating system. Further, proprietary support systems may require modification to the individual bus device drivers. Thus, bus devices may be burdened with increasing vendor and/or operating system-specific features. Moreover, proprietary support systems may not provide the necessary resolution to a bus device failure. For example, in the case of a storage controller, some support systems may not be able to identify a failure in certain portions of the link between a peripheral bus switch and a bus device. Some proprietary support systems are often applicable to only one type of bus device, such as storage devices. It may be difficult or impractical to extend such proprietary support systems to other devices, such as network cards or general-purpose computing on graphics processor units (GPGPUs). Thus, the management of peripheral bus devices and associated failures and errors is undesirable in many information handling systems and associated operating systems.